#include "beep.h"
#include "delay.h"
#include "key.h"
#include "led.h"
#include "stm32f10x.h"
#include "sys.h"
// 按键1-4连接到PA1-PA4，LED连接到PC0-PC7,蜂鸣器连接到PB6
int main(void)
{
    delay_init(); // 延时函数初始化
    LED_Init();   // LED端口初始化
    KEY_Init();   // 初始化与按键连接的硬件接口
    BEEP_Init();  // 初始化蜂鸣器端口
    while (1)
    {
        // 按键Key1和Key3
        if (KEY1_STA == KEY_DN) // 检测是否有按键按下
        {
            delay_ms(10);           // 延时消抖
            if (KEY1_STA == KEY_DN) // 确认是否按键Key1按下
            {
                BEEP = 0;
                LED1_ON;
                LED3_ON;
                LED5_ON;
                LED7_ON;
                while (KEY1_STA == KEY_DN)
                    ; // 等待按键释放
                BEEP = 1;
                LED1_OFF;
                LED3_OFF;
                LED5_OFF;
                LED7_OFF;
            }
        }
        if (KEY3_STA == KEY_DN) // 检测是否有按键按下
        {
            delay_ms(10);           // 延时消抖
            if (KEY3_STA == KEY_DN) // 确认是否按键Key3按下
            {
                BEEP = 0;
                LED7_OFF;
                LED0_ON;
                delay_ms(200);
                LED0_OFF;
                LED1_ON;
                delay_ms(200);
                LED1_OFF;
                LED2_ON;
                delay_ms(200);
                LED2_OFF;
                LED3_ON;
                delay_ms(200);
                LED3_OFF;
                LED4_ON;
                delay_ms(200);
                LED4_OFF;
                LED5_ON;
                delay_ms(200);
                LED5_OFF;
                LED6_ON;
                delay_ms(200);
                LED6_OFF;
                LED7_ON;
                while (KEY3_STA == KEY_DN)
                    ; // 等待按键释放
                BEEP = 1;
                LED0_OFF;
                LED1_OFF;
                LED2_OFF;
                LED3_OFF;
                LED4_OFF;
                LED5_OFF;
                LED6_OFF;
                LED7_OFF;
                delay_ms(300); // 延时300ms
            }
        }
        /* 按键Key2和Key4 */
        if (KEY2_STA == KEY_DN) // 检测是否有按键按下
        {
            delay_ms(10);           // 延时消抖
            if (KEY2_STA == KEY_DN) // 确认是否按键Key2按下
            {
                BEEP = 0;
                LED0_ON;
                LED2_ON;
                LED4_ON;
                LED6_ON;
                while (KEY2_STA == KEY_DN)
                    ; // 等待按键释放
                BEEP = 1;
                LED0_OFF;
                LED2_OFF;
                LED4_OFF;
                LED6_OFF;
                delay_ms(300); // 延时300ms
            }
        }
        if (KEY4_STA == KEY_DN) // 检测是否有按键按下
        {
            delay_ms(10);           // 延时消抖
            if (KEY4_STA == KEY_DN) // 确认是否按键Key4按下
            {
                LED7_ON;
                LED0_OFF;
                delay_ms(200);
                LED7_OFF;
                LED6_ON;
                delay_ms(200);
                LED6_OFF;
                LED5_ON;
                delay_ms(200);
                LED5_OFF;
                LED4_ON;
                delay_ms(200);
                LED4_OFF;
                LED3_ON;
                delay_ms(200);
                LED3_OFF;
                LED2_ON;
                delay_ms(200);
                LED2_OFF;
                LED1_ON;
                delay_ms(200);
                LED1_OFF;
                LED0_ON;
                while (KEY4_STA == KEY_DN)
                    ;
                LED0_OFF;
                LED1_OFF;
                LED2_OFF;
                LED3_OFF;
                LED4_OFF;
                LED5_OFF;
                LED6_OFF;
                LED7_OFF;
            }
        }

        /* 按键Key2和Key4 */
        if (KEY2_STA == KEY_DN) // 检测是否有按键按下
        {
            delay_ms(10);           // 延时消抖
            if (KEY2_STA == KEY_DN) // 确认是否按键Key2按下
            {
                LED0 = !LED0; // LED0翻转
                LED2 = !LED2; // LED2翻转
                LED4 = !LED4; // LED4翻转
                LED6 = !LED6; // LED6翻转
            }
        }
        if (KEY4_STA == KEY_DN) // 检测是否有按键按下
        {
            delay_ms(10);           // 延时消抖
            if (KEY4_STA == KEY_DN) // 确认是否按键Key4按下
            {
                LED0 = !LED0;
                delay_ms(150);
                LED1 = !LED1;
                delay_ms(150);
                LED2 = !LED2;
                delay_ms(150);
                LED3 = !LED3;
                delay_ms(150);
                LED4 = !LED4;
                delay_ms(150);
                LED5 = !LED5;
                delay_ms(150);
                LED6 = !LED6;
                delay_ms(150);
                LED7 = !LED7;
                while (KEY4_STA == KEY_DN)
                    ;
                BEEP = 1;
                LED0 = 1;
                LED1 = 1;
                LED2 = 1;
                LED3 = 1;
                LED4 = 1;
                LED5 = 1;
                LED6 = 1;
                LED7 = 1;
            }
        }
    }
}